<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>内存溢出与内存泄露</title>
</head>

<body>
    <!-- 
        1. 内存溢出
            一种程序运行出现的错误
            当程序运行需要的内存超过了剩余的内存时，就抛出内存溢出的错误
        2. 内存泄露
            占用的内存没有及时释放
            内存泄漏积累多了就容易导致内存溢出
            常见的内存泄露：
                意外的全局变量
                没有及时清理的计时器或回调函数
                闭包
     -->
    <script>
        //  1. 内存溢出
        var obj = {}
        for (var i = 0; i < 1000; i++) {
            obj[i] = new Array(100000000)
        }
        // 2. 内存泄露
        // 意外的全局变量
        function Fn() {
            a = new Array(100000000)
            console.log(a);
        }
        Fn()
        // 启动循环定时器后不清理
        var intervalId = setInterval(function () {
            console.log('------');
        }, 1000)
        // clearInterval(intervalId)
        // 闭包
        function Fn2() {
            var a = 4
            function Fn3() {
                console.log(++a)
            }
            return Fn3
        }
        var fn = Fn2()
        fn()
        // fn = null
    </script>
</body>

</html>